Real time computer control systems are those which are required to perform input/output with an external environment subject to certain time constraints (usually on the order of seconds or less) which must be met consistently. Such real-time computer control systems have been developed for a wide variety of applications with improved performance capabilities. However, these systems have, to a large extent, not been commercially practical due to the sophistication of computer hardware and/or software necessary to carry out their functions.
For example, there is a continuing need for expandable, integrated security systems to provide intelligent access control for doorways, elevators and other entry/exit points in commercial and residential buildings, parking garages and the like. Typically, such systems employ distributed hardware controllers or processing units for controlling the operation of a number of peripheral devices such as readers, lock actuators, sensors, alarms and other equipment. The multiple controllers are connected to a central host computer for collecting and processing information, executing operator commands and performing other functions to provide a fully integrated system. Remote site controllers operating at distant facilities may also be connected to the host computer using standard telephone lines.
In order to provide for adequate real-time performance and system expandability, known access control systems of the type described have relied on the use of relatively powerful 16-bit or 32-bit microprocessor minicomputers as the host in cooperation with sophisticated multitasking operating systems such as those marketed under the tradenames UNIX or XENIX. As referred to herein, a multitasking operating system is one that guides a computer in performing real time operations on a number of computer programs or "tasks" residing in the computer's memory. The attention of the central processing unit (CPU) moves rapidly among the tasks, spending just a short period executing code for one task before switching to another so that the tasks appear to be executing simultaneously. Since it is understood that the task execution is not truly simultaneous, the foregoing is most accurately referred to as concurrent execution. While multitasking operating systems of this type provide for multiple concurrent data processing and communication functions necessary for the operation of the access control system, they have the disadvantage of being relatively expensive and, further, are inefficient in their utilization of memory space.
Microcomputers or personal computers (PC's) having 8-bit microprocessors have become increasingly available and in many instances represent an economical alternative to the more powerful minicomputers described above. Industry standard architecture (ISA) microcomputers such as a basic IBM-compatible AT-PC typically are driven by single user disk operating systems (DOS) such as those available under the trade names MS DOS or PC DOS. The single-user disk operating system is by design single-tasking in operation and therefore is not well suited to handle the real time processing and user interface requirements of distributed access control and other systems.
Techniques are known for providing single tasking disk operating systems with limited concurrent processing capability, typically in a "windows" operating environment in which nonpreemptive task switching is supported by the application software, or otherwise in accordance with application-specific techniques that permit switching among terminate-and-stay-resident (TSR) programs tied to the underlying system's internal flag registers. These so-called multitasking shells or schedulers use the disk operating system for services and, for example, may be tied to use of the MS DOS InDOS flag for making time-slice task switching decisions. The decision to switch from one task to another is initially made by the shell and then logically gated together with the flag, so that the final task switch decision is made by MS DOS. The described multitasking shells are thus inadequate since their time slice task switching decisions are dependent upon logic which may become complex, is not responsive in terms of the real-time operations required, or is otherwise unreliable. Further, such known shells typically require significant memory space and cannot be efficiently accommodated within the system memory constraints which are standard in the PC environment.